These days, workplace computing environments are often characterized by a need to separate the user interface devices from the processing units. In general, the processing units process sensitive and important data that must be protected, such that the processing units are preferably maintained in an environment having specific temperature and security conditions. The user interface devices used by a user to interact with and control the processing unit(s), such as for example a display, a keyboard and a mouse, are typically remotely located from the processing unit(s) within the workplace. These user interface devices may be coupled to a personal computer or a workstation that is connected to the processing unit(s) via a data communications medium, such as a wired or wireless network connection. Accordingly, in some workplaces, users are able to use complex applications necessitating server-type systems, without having to sit in the server room that houses the processing units. Rather, the users generally sit in a location remote from the processing units.
One important problem that is difficult to overcome in this type of distributed computing environment is ensuring that the users get an accurate and real-time experience while using the user interface devices to remotely control the processing units (or servers). More specifically, a real-time graphics display at the remote display, for example in response to user commands made to the processing unit with the mouse or keyboard (e.g. open a window, open a new application, render a 3D scene, etc.), is often hampered by delays caused by network latency. Furthermore, when a processing unit or server interacts and exchanges data with remote user interface devices, the operation of the processing unit itself can easily become stalled as it waits for responses from the remote user interface devices, which can result in system-wide delays that affect not only the processing unit but the experience of the remotely-located user as well.
Many methods and systems have been developed to provide a user with a real, interactive experience when remotely displaying graphics. In one prior art system, all of the graphics rendering is done by a graphics processor on the server side, after which the rendered image is encoded and sent to the client side via a data communications medium for display at the client side. Unfortunately, the encoding and decoding (or compression and decompression) that the rendered image must undergo in this type of system leads to artifacts in the image and a loss of signal quality.
In another prior art system, a graphics processor is located only on the client side and data for rendering graphics is sent to the graphics processor from the server side via a data communications medium, such that the graphics processor can use this data to generate graphics for display at the client side. Unfortunately, in most computing environments, this type of prior art system provides long transmission delays and the latency experienced at the client side is unacceptable.
Consequently, there exists a need in the industry to provide an improved method and system for remote graphics display, such that an accurate and real-time display of the graphics is experienced by the remote user.